
package com.atguigu.utils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

//  TODO 该工具类中的 Jedis 连接池是基于单机模式的，如果需要在分布式环境下使用 Redis，可能需要考虑使用其他方案，如 Redis Cluster 或 Sentinel
public class JedisUtil {

    //  创建连接对象
    private static JedisPool jedisPool;

    //  在静态代码块中 设置连接池的相关配置
    static {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(100);
        poolConfig.setMaxIdle(5);
        poolConfig.setMinIdle(5);
        poolConfig.setBlockWhenExhausted(true);
        poolConfig.setMaxWaitMillis(2000);
        poolConfig.setTestOnBorrow(true);
        jedisPool = new JedisPool(poolConfig, "hadoop102", 6379, 10000);
    }

    //  用于获取 Jedis 客户端对象、并返回给调用者使用
    public static Jedis getJedis() {
        // 获取Jedis客户端
        Jedis jedis = jedisPool.getResource();
        return jedis;
    }

    public static void main(String[] args) {
        Jedis jedis = getJedis();
        String pong = jedis.ping();
        System.out.println(pong);
    }

}
